package com.hyper_yang.javase.collections.set_collection.treeSet;

import java.util.Comparator;
import java.util.TreeSet;

public class TryTreeSet {
    /*
        TreeSet 排序规则: 数值类型: Integer、Short、Float、Double 按值 升序排序
                        字符类型: Character String 按字符在ASCII码表中的数字 升序排序
                        对象类型:  1: 默认的排序规则/自然排序 javaBean类实现 Comparable接口指定比较规则。 TreeSet 底层是红黑树 不需要重写hashcode()、equals()
                                 2: 比较器排序，创建 TreeSet对象的时候，传递比较器 Comparator指定规则。
                              默认使用第一种，第一种不能满足需求时，使用第二种。
     */
    public static void main(String[] args) {
        // 比较 "c" "ab" "df" "qwer"  规则: 按照长度排序，如果一样长则按照首字母排序
        TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
            /**
             * @param o1 当前要添加的元素
             * @param o2 已经存在的元素
             */
            @Override
            public int compare(String o1, String o2) {
                int len = o1.length() - o2.length(); // 先长度升序
                return len == 0 ? o1.compareTo(o2) : len; // 再默认
            }
        });

        treeSet.add("qwer");
        treeSet.add("df");
        treeSet.add("ab");
        treeSet.add("c");


        System.out.println(treeSet);

//        Student stu1 = new Student("zhangsan",13);
//        Student stu2 = new Student("lisi",14);
//        Student stu3 = new Student("wangwu",15);
//        Student stu4 = new Student("zhaoliu",16);
//
//        TreeSet<Student> treeSet = new TreeSet<>();
//
//        treeSet.add(stu1);
//        treeSet.add(stu2);
//        treeSet.add(stu3);
//        treeSet.add(stu4);
//
//        System.out.println(treeSet);


//        TreeSet<Integer> treeSet = new TreeSet<>();
//
//        treeSet.add(3);
//        treeSet.add(2);
//        treeSet.add(5);
//        treeSet.add(4);
//        treeSet.add(1);
//
//        System.out.println(treeSet);
    }
}
